//创建和更新
//1,以openid 为用户id来添加更新删除数据 ( 更改同一条数据 )
//2,包含所有的邮卡，更新时间，随机奖品

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init();

const db = cloud.database();
const col = db.collection('test02');
const _=db.command;


// 云函数入口函数
exports.main = async (event, context) => {
    const wxContext = cloud.getWXContext()
    
    //查询该用户在数据库中的记录
    let user = await col.where({
        '_openid': wxContext.OPENID
    }).get();
    let type;
    //随机邮字
    let rand = Math.random();
    switch (true) {
        case (rand < 0.3):
            type = 0;
            break;
        case (rand > 0.3 && rand < 0.6):
            type = 1;
            break;
        case (rand < 0.9 && rand > 0.6):
            type = 2;
            break;
        case (rand >= 0.9):
            type = 3;
            break;
    }
    
    //用户记录长度为0，代表第一次使用，使用add操作
    if(user.data.length == 0 ){
        
        let words = [
            {name:'邮家贷',type:0,number:0},
            {name:'邮薪贷',type:1,number:0},
            {name:'邮学贷',type:2,number:0},
            {name:'邮掌柜',type:3,number:0},
        ];
      
        
        //控制随机一个字 +1
        words[type].number += 1;
        let data = {
            '_openid': wxContext.OPENID,
            'words': words,
            updateTime: getDay(),
            times: 1,
            prize: null
        }
        //添加awit 防止直接return
        let result = await col.add({
            data: data
        })
        return {
            msg: '添加成功',
            result: result,
        }
    }else{
        //除第一外，都是更新操作
        user = user.data[0];

        if(user.times <= 0 && user.updateTime == getDay( )){
            return {
                msg:'今天次数已经用完，明天继续~~',
                success:false
            }
        }
        // times代表剩余次数，在第二天时重置
        let times;
        if(user.updateTime !== getDay( )){
            times = 1;
        }
        //增加一个
        user.words[type].number +=1;

        let result = await col.where({
            '_openid':wxContext.OPENID
        }).update({
            data:{
                'words':user.words,
                //可用次数-1
                'times':times || _.inc(-1),
                //获取今日日期
                'updateTime':getDay()
            }
        });
        return {
            msg: '修改成功',
            result: result,
        }
    }
   
}

function getDay(){
    let d=new Date();
    return d.getFullYear() + '-'+(d.getMonth()+1) + '-'+d.getDate();
}